package db

import (
	"fitness/config"
	"fmt"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/logger"
	"log"
	"os"
	"time"
)

func NewDB(config *config.DBConfig) (*gorm.DB, error) {
	newLogger := logger.New(
		log.New(os.Stdout, "\r\n", log.LstdFlags), // 输出到标准输出
		logger.Config{
			SlowThreshold:             time.Second, // 慢 SQL 阈值
			LogLevel:                  logger.Info, // 日志级别（Info 级别会打印所有 SQL）
			IgnoreRecordNotFoundError: false,       // 是否忽略 RecordNotFound 错误
			Colorful:                  true,        // 彩色打印（开发环境推荐）
		},
	)
	db, err := gorm.Open(mysql.Open(config.DBDSN), &gorm.Config{
		Logger: newLogger,
	})
	if err != nil {
		return nil, fmt.Errorf("failed to connect to database: %w", err)
	}

	return db, nil
}
